//===============================================================================
// Microsoft patterns & practices Enterprise Library Contribution
// Resource Application Block
//===============================================================================

using System;
using System.Management.Instrumentation;
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration.Manageability;

namespace EntLibContrib.Resource.Configuration.Manageability
{
	/// <summary>
	/// Represents the configuration information for an instance of a concrete subclass of
	/// <see cref="EntLibContrib.Resource.Configuration.ResourceProviderData"/>.
	/// </summary>
	/// <seealso cref="EntLibContrib.Resource.Configuration.ResourceProviderData"/>
	/// <seealso cref="NamedConfigurationSetting"/>
	/// <seealso cref="ConfigurationSetting"/>
	[InstrumentationClass(InstrumentationType.Abstract)]
	public abstract class ResourceProviderSetting : NamedConfigurationSetting
	{
		#region Fields
		private String resourceBaseName;
		#endregion

		#region Properties
		/// <summary>
		/// Gets the base name of the resources for the represented configuration object.
		/// </summary>
		/// <value>The name of the resource base.</value>
		/// <seealso cref="EntLibContrib.Resource.Configuration.ResourceProviderData.ResourceBaseName">AssemblyResourceProviderData.ResourceBaseName</seealso>
		public String ResourceBaseName
		{
			get { return resourceBaseName; }
			internal set { resourceBaseName = value; }
		}
		#endregion

		#region Construction
		/// <summary>
		/// Initializes a new instance of the <see cref="ResourceProviderSetting"/> class.
		/// </summary>
		/// <param name="name">The name.</param>
		/// <param name="resourceBaseName">Name of the resource base.</param>
		protected ResourceProviderSetting(string name, string resourceBaseName)
			: base(name)
		{
			this.resourceBaseName = resourceBaseName;
		}
		#endregion
	}
}
